package main

import "fmt"

func ping(pings chan<- string, msg string) {
	pings <- msg
}
func pong(pings <-chan string, pongs chan<- string) {
	msg := <-pings
	pongs <- msg
}

func main() {
	pings := make(chan string, 1)
	pongs := make(chan string, 1)

	ping(pings, "passed message")
	pong(pings, pongs)
	fmt.Println(<-pongs)
}

// 其实可以这样理解：
// 1. chan<- 表示只能向通道写入，而不能读取
// 2. <-chan 表示此通道只能向外输出，而不能写入通道

// GPT回答
// chan<- 表示这个通道只能用于发送数据，不能用于接收数据。也就是说，只能向通道写入数据，不能从中读取数据。
// <-chan 表示这个通道只能用于接收数据，不能用于发送数据。也就是说，只能从通道接收数据，不能向其中写入数据。
